/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.webhomesites.configuracao.model;

import br.com.webhomesites.configuracao.contracts.IEmpresaDAO;

import br.com.webhomesites.configuracao.utils.Conexao;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;

/**
 *
 * @author Warlley
 */
public class EmpresaDAO implements IEmpresaDAO{   
    
    private Session session;
    EmpresaModel empresaModel;
    
    public EmpresaDAO() {
        this.session = getSession();
    }
    
    public void inserirEmpresa(EmpresaModel empresaModel) {
        Transaction tx = session.beginTransaction();
        session.save(empresaModel);
        tx.commit();
        
        /*String tabela = "INSERT INTO CFGEMPRESA";
        String colunas = "(CODEMPRESA, CNPJEMPRESA, INSCESTEMPRESA, RAZSOCEMPRESA, ENDERECOEMPRESA,"
                + "BAIRROEMPRESA,TELEFONEEMPRESA, EMAILEMPRESA, CODCIDADEEMPRESA, CODESTADOEMPRESA)";
        String valores = "values(?,?,?,?,?,?,?,?,?,?,?,?)";

        java.sql.Connection start = Conexao.conectar();
                  
       try {
            PreparedStatement ps = (PreparedStatement) start.prepareStatement(tabela + colunas + valores);
            ps.setInt(1, empresaModel.getCodigo());
            ps.setString(2, empresaModel.getCnpj());
            ps.setString(3, empresaModel.getInscricaoEstadual());
            ps.setString(4, empresaModel.getRazaoSocial());
            ps.setString(5, empresaModel.getEndereco());            
            ps.setString(6, empresaModel.getBairro());            
            ps.setString(7, empresaModel.getTelefone());
            ps.setString(8, empresaModel.getEmail());            
            ps.setInt(9, empresaModel.getCodigoCidade());
            ps.setInt(10, empresaModel.getCodigoEstado());
                                    
            ps.execute();            
            
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
       
        Conexao.fechar();
        JOptionPane.showMessageDialog(null, "Empresa: " + empresaModel.getRazaoSocial() 
                +"\ninserida com sucesso!");*/
    }

    @Override
    public void removerEmpresa(EmpresaModel empresaModel) {
        String tabela = "DELETE FROM CFGEMPRESA WHERE CODEMPRESA = "+ empresaModel.getCodigo();
                
        java.sql.Connection start = Conexao.conectar();
      
        try {
           Statement st = (Statement) start.createStatement();           
           st.execute(tabela);
           JOptionPane.showMessageDialog(null, "A empresa: " + empresaModel.getRazaoSocial() + 
                   "foi removida com sucesso!");
           
           
           empresaModel.setRazaoSocial("");
           empresaModel.setCnpj("");
           empresaModel.setInscricaoEstadual("");
           empresaModel.setEndereco("");
           empresaModel.setBairro("");
           empresaModel.setTelefone("");
           empresaModel.setEmail("");
           
           
                      
           //Precisa reiniciar os combobox
                      
        } catch (SQLException ex) {           
            JOptionPane.showMessageDialog(null, "A empresa: " + empresaModel.getRazaoSocial() + "\n"
                + "não pode ser removida. Ela não foi encontrada!");            
        }
        Conexao.fechar();
    }

    @Override
    public void atualizarEmpresa(EmpresaModel empresaModel) {
        
        String tabela = "UPDATE CFGEMPRESA SET RAZSOCEMPRESA = '"+ empresaModel.getRazaoSocial()
                +"', CNPJEMPRESA = '" +empresaModel.getCnpj()
                + "',INCESTEMPRESA = '"+empresaModel.getInscricaoEstadual()
                +"',ENDERECOEMPRESA = '"+empresaModel.getEndereco()
                + "',BAIRROEMPRESA = '"+empresaModel.getBairro()
                +"',TELEFONEEMPRESA = '"+empresaModel.getTelefone()
                +"',EMAILEMPRESA = "+empresaModel.getEmail();
      
        java.sql.Connection start = Conexao.conectar();
                           
        try {
            Statement st = (Statement) start.createStatement();
            st.executeUpdate(tabela);
            
            
        } catch (SQLException ex) {         
            ex.printStackTrace();
        }
        Conexao.fechar();
        JOptionPane.showMessageDialog(null, "Empresa: " + empresaModel.getRazaoSocial() + "\natualizada com sucesso!");
    }

    @Override
    public void selecionarEmpresa() {
        //throw new UnsupportedOperationException("Not supported yet.");
    }
    
    public Session getSession() {
        
        AnnotationConfiguration configuration = new AnnotationConfiguration();
        configuration.configure();
        SessionFactory factory = configuration.buildSessionFactory();
        Session session = (Session) factory.openSession();
        return session;
        
    }
 }
